package com.algorithm.ch1.cjm.other;

import java.util.ArrayList;
import java.util.List;

/**
 * 帕斯卡三角形
 * 给定一个非负整数 numRows，生成杨辉三角的前 numRows 行。
 *
 * @Author: Jie Ming Chen
 * @Date: 2018/9/16
 * @Version 1.0
 */
public class Generate {

    public static void main(String[] args) {

        List<List<Integer>> generate = new Generate().generate(5);

        System.out.println(generate.toString());
    }

    public List<List<Integer>> generate(int numRows) {

        List res = new ArrayList();
        for (int i = 1; i <= numRows; i++) {
            res.add(getList(i, res));
        }

        return res;
    }

    private List<Integer> getList(int row, List<List<Integer>> resList) {

        List list = new ArrayList<>();

        if (row == 1) {
            list.add(1);

            return list;
        } else if (row == 2) {

            list.add(1);
            list.add(1);

            return list;
        }

        List<Integer> integerList = null;

        for (int i = 0; i < row; i++) {

            if (i == 0) {
                list.add(1);
            } else if (i == row -1) {
                list.add(1);
            } else {

                integerList = resList.get(row - 2);
                int sum = integerList.get(i - 1) + integerList.get(i);

                list.add(sum);
            }
        }

        return list;
    }

}
